//
// Created by 11067 on 2023/3/11.
//

#ifndef WORD_LIST_CORE_WORDLISTEXCEPTION_H
#define WORD_LIST_CORE_WORDLISTEXCEPTION_H

#include <stdexcept>
#include "../common.h"
using std::runtime_error;
/**
 * 本项目的异常基类
 */
class DLLEXPORT WordListException : public runtime_error {
public:
    explicit WordListException(const std::string &error);
};
/**
 * 文件IO错误
 */
class DLLEXPORT FileException : public WordListException {
public:
    explicit FileException(const std::string &error);
};
/**
 * 命令行接口错误
 */
class DLLEXPORT CLIOptionException : public WordListException {
public:
    explicit CLIOptionException(const std::string &error);
};
/**
 * 非法输入错误，输入有奇怪的字符
 */
//class DLLEXPORT IllegalInputException : public WordListException {
//public:
//    explicit IllegalInputException(const std::string &error);
//};
/**
 *  API错误，比如答案太长
 */
class DLLEXPORT APIException : public WordListException {
public:
    explicit APIException(const std::string &error);
};
#endif //WORD_LIST_CORE_WORDLISTEXCEPTION_H
